package com.wgy.day31字节流.字节输出流;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;

/**
 * Created by pc on 2020/12/3 20:54
 * Description: LearningJava
 */
/*
一次写入多个字节的方法:
  void write(byte[] b) :将b.length字节从指定的字节数组中写入此输出流
                        一次写入多个字节:
                        如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表
                        如果写的第一个字节是负数,那么第一个字节会和第二个字节两个字节组成一个中文显示,查询系统默认码表(GBK)

  void write(byte[] b,int off,int len):将指定的字节数组写入len字节,从偏移量off开始输出到此输出流 即:把字节数组的一部分写入到文件中
                                   参数:int off:数组的开始索引
                                       int len:写几个字节

      写入字符串的方法:可以使用String类中方法将字符串转换为字节数组
                    byte[] getBytes():把字符串转换为字节数组
*/
public class Demo02OutputStream {
    public static void main(String[] args) throws IOException {
        //1.创建FileOutputStream对象
        FileOutputStream fos = new FileOutputStream("D:\\小云\\abc\\b\\b.txt");
        //2.调用FileOutputStream对象中的方法write,把数据写入到文件中
        fos.write(49);
        fos.write(48);
        fos.write(48);//100

        byte[] bytes = {65, 66, 67, 68, 69};//100ABCDE
       // byte[] bytes = {-65, -66, -67, 68, 69};//100烤紻E
        fos.write(bytes);

        fos.write(bytes,1,2);//100ABCDEBC

        // 写入字符串的方法:可以使用String类中方法将字符串转换为字节数组
        byte[] bytes1 = "你好".getBytes();
        System.out.println(Arrays.toString(bytes1));//[-28, -67, -96, -27, -91, -67]
        fos.write(bytes1);//100ABCDEBC你好


        //3.释放资源(流使用会占用一定的内存,使用完毕后要把内存清空,提高程序的效率)
        fos.close();
    }
}
